import Vue from 'vue';
import App from './App.vue';
import router from './router';

// 阻止生产消息提示
Vue.config.productionTip = false

// 全局引入jquery
import $ from 'jquery';
Vue.prototype.$ = Vue.prototype.jQuery = $;

// 引入boostrap
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap.bundle.js';

// 自定义全局指令
Vue.directive('debounce', {
  bind() {
    // 指令第一次绑定调用
  },
  inserted(el, binding) { // 传递三个参数，第一个为事件名，第二个为事件函数，第三个为间隔时间
    // 被绑定元素插入到父节点时调用
    let timer
    el.addEventListener(binding.value[0], () => {
      if (timer) {
        clearInterval(timer)
      }
      timer = setTimeout(() => {
        binding.value[1]()
      }, binding.value[2])
    })
  },
  update() {
    // 指令所在组件VNode更新时调用
  },
  componentUpdated() {
    // 指令所在组件及其子组件VNode更新时调用
  },
  unbind() {
    // 指令在组件绑时调用
  }
})

// 自定义全局过滤器
Vue.filter('toTwo', function (value, n) {
  return value.toFixed(n)
})

// 注册全局组件
import common from "./common/index";
for (let attr in common) {
  Vue.component(attr, common[attr])
}

// 全局注册Vue实例
Vue.prototype.$bus = new Vue()

// 全局注册混入
// import {
//   toggle
// } from './pages/混入/mixin.js';
// Vue.mixin(toggle);

import store from './store/index.js';

new Vue({
  router,
  store,
  model: 'hash', // 路由模式
  render: h => h(App),
}).$mount('#app')